<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/asm-generic/atomic-long.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/asm-generic/atomic-long.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_noref.html#_X0FTTV9HRU5FUklDX0FUT01JQ19MT05HX0hfMA__"><span class="b">_ASM_GENERIC_ATOMIC_LONG_H</span></a>
<a name="2" /><span class="True">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X0FTTV9HRU5FUklDX0FUT01JQ19MT05HX0hfMA__"><span class="b">_ASM_GENERIC_ATOMIC_LONG_H</span></a>
<a name="3" /><span class="True">       3:</span> <span class="k">/*</span>
<a name="4" /><span class="True">       4:</span> <span class="k"> * Copyright (C) 2005 Silicon Graphics, Inc.</span>
<a name="5" /><span class="True">       5:</span> <span class="k"> *    Christoph Lameter</span>
<a name="6" /><span class="True">       6:</span> <span class="k"> *</span>
<a name="7" /><span class="True">       7:</span> <span class="k"> * Allows to provide arch independent atomic definitions without the need to</span>
<a name="8" /><span class="True">       8:</span> <span class="k"> * edit all arch specific atomic.h files.</span>
<a name="9" /><span class="True">       9:</span> <span class="k"> */</span>
<a name="10" /><span class="True">      10:</span> 
<a name="11" /><span class="True">      11:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="m">asm</span><span class="f">/</span><span class="b">types</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="12" /><span class="True">      12:</span> 
<a name="13" /><span class="True">      13:</span> <span class="k">/*</span>
<a name="14" /><span class="True">      14:</span> <span class="k"> * Suppport for atomic_long_t</span>
<a name="15" /><span class="True">      15:</span> <span class="k"> *</span>
<a name="16" /><span class="True">      16:</span> <span class="k"> * Casts for parameters are avoided for existing atomic functions in order to</span>
<a name="17" /><span class="True">      17:</span> <span class="k"> * avoid issues with cast-as-lval under gcc 4.x and other limitations that the</span>
<a name="18" /><span class="True">      18:</span> <span class="k"> * macros of a platform may have.</span>
<a name="19" /><span class="True">      19:</span> <span class="k"> */</span>
<a name="20" /><span class="True">      20:</span> 
<a name="21" /><span class="True">      21:</span> <span class="f">#</span><span class="n">if</span> <a href="cpu.c_macros_ref.html#_QklUU19QRVJfTE9OR18w"><span class="b">BITS_PER_LONG</span></a> <span class="f">==</span> <span class="c">64</span>
<a name="22" /><span class="True">      22:</span> 
<a name="23" /><span class="True">      23:</span> <span class="m">typedef</span> <span class="b">atomic64_t</span> <span class="b">atomic_long_t</span><span class="f">;</span>
<a name="24" /><span class="True">      24:</span> 
<a name="25" /><span class="True">      25:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_QVRPTUlDX0xPTkdfSU5JVF8w"><span class="b">ATOMIC_LONG_INIT</span></a><span class="f">(</span><span class="b">i</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_QVRPTUlDNjRfSU5JVF8w"><span class="b">ATOMIC64_INIT</span></a><span class="f">(</span><span class="b">i</span><span class="f">)</span>
<a name="26" /><span class="True">      26:</span> 
<a name="27" /><span class="True">      27:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">long</span> <span class="b">atomic_long_read</span><span class="f">(</span><span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="28" /><span class="True">      28:</span> <span class="f">{</span>
<a name="29" /><span class="True">      29:</span>     <span class="b">atomic64_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic64_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="30" /><span class="True">      30:</span> 
<a name="31" /><span class="True">      31:</span>     <span class="m">return</span> <span class="f">(</span><span class="m">long</span><span class="f">)</span><span class="b">atomic64_read</span><span class="f">(</span><span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="32" /><span class="True">      32:</span> <span class="f">}</span>
<a name="33" /><span class="True">      33:</span> 
<a name="34" /><span class="True">      34:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">atomic_long_set</span><span class="f">(</span><span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">,</span> <span class="m">long</span> <span class="b">i</span><span class="f">)</span>
<a name="35" /><span class="True">      35:</span> <span class="f">{</span>
<a name="36" /><span class="True">      36:</span>     <span class="b">atomic64_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic64_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="37" /><span class="True">      37:</span> 
<a name="38" /><span class="True">      38:</span>     <span class="b">atomic64_set</span><span class="f">(</span><span class="b">v</span><span class="f">,</span> <span class="b">i</span><span class="f">)</span><span class="f">;</span>
<a name="39" /><span class="True">      39:</span> <span class="f">}</span>
<a name="40" /><span class="True">      40:</span> 
<a name="41" /><span class="True">      41:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">atomic_long_inc</span><span class="f">(</span><span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="42" /><span class="True">      42:</span> <span class="f">{</span>
<a name="43" /><span class="True">      43:</span>     <span class="b">atomic64_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic64_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="44" /><span class="True">      44:</span> 
<a name="45" /><span class="True">      45:</span>     <span class="b">atomic64_inc</span><span class="f">(</span><span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="46" /><span class="True">      46:</span> <span class="f">}</span>
<a name="47" /><span class="True">      47:</span> 
<a name="48" /><span class="True">      48:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">atomic_long_dec</span><span class="f">(</span><span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="49" /><span class="True">      49:</span> <span class="f">{</span>
<a name="50" /><span class="True">      50:</span>     <span class="b">atomic64_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic64_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="51" /><span class="True">      51:</span> 
<a name="52" /><span class="True">      52:</span>     <span class="b">atomic64_dec</span><span class="f">(</span><span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="53" /><span class="True">      53:</span> <span class="f">}</span>
<a name="54" /><span class="True">      54:</span> 
<a name="55" /><span class="True">      55:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">atomic_long_add</span><span class="f">(</span><span class="m">long</span> <span class="b">i</span><span class="f">,</span> <span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="56" /><span class="True">      56:</span> <span class="f">{</span>
<a name="57" /><span class="True">      57:</span>     <span class="b">atomic64_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic64_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="58" /><span class="True">      58:</span> 
<a name="59" /><span class="True">      59:</span>     <span class="b">atomic64_add</span><span class="f">(</span><span class="b">i</span><span class="f">,</span> <span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="60" /><span class="True">      60:</span> <span class="f">}</span>
<a name="61" /><span class="True">      61:</span> 
<a name="62" /><span class="True">      62:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">atomic_long_sub</span><span class="f">(</span><span class="m">long</span> <span class="b">i</span><span class="f">,</span> <span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="63" /><span class="True">      63:</span> <span class="f">{</span>
<a name="64" /><span class="True">      64:</span>     <span class="b">atomic64_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic64_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="65" /><span class="True">      65:</span> 
<a name="66" /><span class="True">      66:</span>     <span class="b">atomic64_sub</span><span class="f">(</span><span class="b">i</span><span class="f">,</span> <span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="67" /><span class="True">      67:</span> <span class="f">}</span>
<a name="68" /><span class="True">      68:</span> 
<a name="69" /><span class="True">      69:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">atomic_long_sub_and_test</span><span class="f">(</span><span class="m">long</span> <span class="b">i</span><span class="f">,</span> <span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="70" /><span class="True">      70:</span> <span class="f">{</span>
<a name="71" /><span class="True">      71:</span>     <span class="b">atomic64_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic64_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="72" /><span class="True">      72:</span> 
<a name="73" /><span class="True">      73:</span>     <span class="m">return</span> <span class="b">atomic64_sub_and_test</span><span class="f">(</span><span class="b">i</span><span class="f">,</span> <span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="74" /><span class="True">      74:</span> <span class="f">}</span>
<a name="75" /><span class="True">      75:</span> 
<a name="76" /><span class="True">      76:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">atomic_long_dec_and_test</span><span class="f">(</span><span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="77" /><span class="True">      77:</span> <span class="f">{</span>
<a name="78" /><span class="True">      78:</span>     <span class="b">atomic64_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic64_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="79" /><span class="True">      79:</span> 
<a name="80" /><span class="True">      80:</span>     <span class="m">return</span> <span class="b">atomic64_dec_and_test</span><span class="f">(</span><span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="81" /><span class="True">      81:</span> <span class="f">}</span>
<a name="82" /><span class="True">      82:</span> 
<a name="83" /><span class="True">      83:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">atomic_long_inc_and_test</span><span class="f">(</span><span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="84" /><span class="True">      84:</span> <span class="f">{</span>
<a name="85" /><span class="True">      85:</span>     <span class="b">atomic64_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic64_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="86" /><span class="True">      86:</span> 
<a name="87" /><span class="True">      87:</span>     <span class="m">return</span> <span class="b">atomic64_inc_and_test</span><span class="f">(</span><span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="88" /><span class="True">      88:</span> <span class="f">}</span>
<a name="89" /><span class="True">      89:</span> 
<a name="90" /><span class="True">      90:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">atomic_long_add_negative</span><span class="f">(</span><span class="m">long</span> <span class="b">i</span><span class="f">,</span> <span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="91" /><span class="True">      91:</span> <span class="f">{</span>
<a name="92" /><span class="True">      92:</span>     <span class="b">atomic64_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic64_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="93" /><span class="True">      93:</span> 
<a name="94" /><span class="True">      94:</span>     <span class="m">return</span> <span class="b">atomic64_add_negative</span><span class="f">(</span><span class="b">i</span><span class="f">,</span> <span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="95" /><span class="True">      95:</span> <span class="f">}</span>
<a name="96" /><span class="True">      96:</span> 
<a name="97" /><span class="True">      97:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">long</span> <span class="b">atomic_long_add_return</span><span class="f">(</span><span class="m">long</span> <span class="b">i</span><span class="f">,</span> <span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="98" /><span class="True">      98:</span> <span class="f">{</span>
<a name="99" /><span class="True">      99:</span>     <span class="b">atomic64_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic64_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="100" /><span class="True">     100:</span> 
<a name="101" /><span class="True">     101:</span>     <span class="m">return</span> <span class="f">(</span><span class="m">long</span><span class="f">)</span><span class="b">atomic64_add_return</span><span class="f">(</span><span class="b">i</span><span class="f">,</span> <span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="102" /><span class="True">     102:</span> <span class="f">}</span>
<a name="103" /><span class="True">     103:</span> 
<a name="104" /><span class="True">     104:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">long</span> <span class="b">atomic_long_sub_return</span><span class="f">(</span><span class="m">long</span> <span class="b">i</span><span class="f">,</span> <span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="105" /><span class="True">     105:</span> <span class="f">{</span>
<a name="106" /><span class="True">     106:</span>     <span class="b">atomic64_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic64_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="107" /><span class="True">     107:</span> 
<a name="108" /><span class="True">     108:</span>     <span class="m">return</span> <span class="f">(</span><span class="m">long</span><span class="f">)</span><span class="b">atomic64_sub_return</span><span class="f">(</span><span class="b">i</span><span class="f">,</span> <span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="109" /><span class="True">     109:</span> <span class="f">}</span>
<a name="110" /><span class="True">     110:</span> 
<a name="111" /><span class="True">     111:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">long</span> <span class="b">atomic_long_inc_return</span><span class="f">(</span><span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="112" /><span class="True">     112:</span> <span class="f">{</span>
<a name="113" /><span class="True">     113:</span>     <span class="b">atomic64_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic64_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="114" /><span class="True">     114:</span> 
<a name="115" /><span class="True">     115:</span>     <span class="m">return</span> <span class="f">(</span><span class="m">long</span><span class="f">)</span><a href="cpu.c_macros_ref.html#_YXRvbWljNjRfaW5jX3JldHVybl8w"><span class="b">atomic64_inc_return</span></a><span class="f">(</span><span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="116" /><span class="True">     116:</span> <span class="f">}</span>
<a name="117" /><span class="True">     117:</span> 
<a name="118" /><span class="True">     118:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">long</span> <span class="b">atomic_long_dec_return</span><span class="f">(</span><span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="119" /><span class="True">     119:</span> <span class="f">{</span>
<a name="120" /><span class="True">     120:</span>     <span class="b">atomic64_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic64_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="121" /><span class="True">     121:</span> 
<a name="122" /><span class="True">     122:</span>     <span class="m">return</span> <span class="f">(</span><span class="m">long</span><span class="f">)</span><a href="cpu.c_macros_ref.html#_YXRvbWljNjRfZGVjX3JldHVybl8w"><span class="b">atomic64_dec_return</span></a><span class="f">(</span><span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="123" /><span class="True">     123:</span> <span class="f">}</span>
<a name="124" /><span class="True">     124:</span> 
<a name="125" /><span class="True">     125:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">long</span> <span class="b">atomic_long_add_unless</span><span class="f">(</span><span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">,</span> <span class="m">long</span> <span class="b">a</span><span class="f">,</span> <span class="m">long</span> <span class="b">u</span><span class="f">)</span>
<a name="126" /><span class="True">     126:</span> <span class="f">{</span>
<a name="127" /><span class="True">     127:</span>     <span class="b">atomic64_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic64_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="128" /><span class="True">     128:</span> 
<a name="129" /><span class="True">     129:</span>     <span class="m">return</span> <span class="f">(</span><span class="m">long</span><span class="f">)</span><span class="b">atomic64_add_unless</span><span class="f">(</span><span class="b">v</span><span class="f">,</span> <span class="b">a</span><span class="f">,</span> <span class="b">u</span><span class="f">)</span><span class="f">;</span>
<a name="130" /><span class="True">     130:</span> <span class="f">}</span>
<a name="131" /><span class="True">     131:</span> 
<a name="132" /><span class="True">     132:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_YXRvbWljX2xvbmdfaW5jX25vdF96ZXJvXzA_"><span class="b">atomic_long_inc_not_zero</span></a><span class="f">(</span><span class="b">l</span><span class="f">)</span> <a href="cpu.c_macros_noref.html#_YXRvbWljNjRfaW5jX25vdF96ZXJvXzA_"><span class="b">atomic64_inc_not_zero</span></a><span class="f">(</span><span class="f">(</span><span class="b">atomic64_t</span> <span class="f">*</span><span class="f">)</span><span class="f">(</span><span class="b">l</span><span class="f">)</span><span class="f">)</span>
<a name="133" /><span class="True">     133:</span> 
<a name="134" /><span class="True">     134:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_YXRvbWljX2xvbmdfY21weGNoZ18w"><span class="b">atomic_long_cmpxchg</span></a><span class="f">(</span><span class="b">l</span><span class="f">,</span> <span class="b">old</span><span class="f">,</span> <span class="m">new</span><span class="f">)</span> \
<a name="135" /><span class="True">     135:</span>     <span class="f">(</span><span class="b">atomic64_cmpxchg</span><span class="f">(</span><span class="f">(</span><span class="b">atomic64_t</span> <span class="f">*</span><span class="f">)</span><span class="f">(</span><span class="b">l</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">old</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="m">new</span><span class="f">)</span><span class="f">)</span><span class="f">)</span>
<a name="136" /><span class="True">     136:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_YXRvbWljX2xvbmdfeGNoZ18w"><span class="b">atomic_long_xchg</span></a><span class="f">(</span><span class="b">v</span><span class="f">,</span> <span class="m">new</span><span class="f">)</span> \
<a name="137" /><span class="True">     137:</span>     <span class="f">(</span><span class="b">atomic64_xchg</span><span class="f">(</span><span class="f">(</span><span class="b">atomic64_t</span> <span class="f">*</span><span class="f">)</span><span class="f">(</span><span class="b">v</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="m">new</span><span class="f">)</span><span class="f">)</span><span class="f">)</span>
<a name="138" /><span class="True">     138:</span> 
<a name="139" /><span class="False">     139:</span> <span class="f">#</span><span class="n">else</span>  <span class="k">/*  BITS_PER_LONG == 64  */</span>
<a name="140" /><span class="False">     140:</span> 
<a name="141" /><span class="False">     141:</span> <span class="m">typedef</span> <span class="b">atomic_t</span> <span class="b">atomic_long_t</span><span class="f">;</span>
<a name="142" /><span class="False">     142:</span> 
<a name="143" /><span class="False">     143:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_QVRPTUlDX0xPTkdfSU5JVF8w"><span class="b">ATOMIC_LONG_INIT</span></a><span class="f">(</span><span class="b">i</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_QVRPTUlDX0lOSVRfMA__"><span class="b">ATOMIC_INIT</span></a><span class="f">(</span><span class="b">i</span><span class="f">)</span>
<a name="144" /><span class="False">     144:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">long</span> <span class="b">atomic_long_read</span><span class="f">(</span><span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="145" /><span class="False">     145:</span> <span class="f">{</span>
<a name="146" /><span class="False">     146:</span>     <span class="b">atomic_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="147" /><span class="False">     147:</span> 
<a name="148" /><span class="False">     148:</span>     <span class="m">return</span> <span class="f">(</span><span class="m">long</span><span class="f">)</span><span class="b">atomic_read</span><span class="f">(</span><span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="149" /><span class="False">     149:</span> <span class="f">}</span>
<a name="150" /><span class="False">     150:</span> 
<a name="151" /><span class="False">     151:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">atomic_long_set</span><span class="f">(</span><span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">,</span> <span class="m">long</span> <span class="b">i</span><span class="f">)</span>
<a name="152" /><span class="False">     152:</span> <span class="f">{</span>
<a name="153" /><span class="False">     153:</span>     <span class="b">atomic_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="154" /><span class="False">     154:</span> 
<a name="155" /><span class="False">     155:</span>     <span class="b">atomic_set</span><span class="f">(</span><span class="b">v</span><span class="f">,</span> <span class="b">i</span><span class="f">)</span><span class="f">;</span>
<a name="156" /><span class="False">     156:</span> <span class="f">}</span>
<a name="157" /><span class="False">     157:</span> 
<a name="158" /><span class="False">     158:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">atomic_long_inc</span><span class="f">(</span><span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="159" /><span class="False">     159:</span> <span class="f">{</span>
<a name="160" /><span class="False">     160:</span>     <span class="b">atomic_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="161" /><span class="False">     161:</span> 
<a name="162" /><span class="False">     162:</span>     <span class="b">atomic_inc</span><span class="f">(</span><span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="163" /><span class="False">     163:</span> <span class="f">}</span>
<a name="164" /><span class="False">     164:</span> 
<a name="165" /><span class="False">     165:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">atomic_long_dec</span><span class="f">(</span><span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="166" /><span class="False">     166:</span> <span class="f">{</span>
<a name="167" /><span class="False">     167:</span>     <span class="b">atomic_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="168" /><span class="False">     168:</span> 
<a name="169" /><span class="False">     169:</span>     <span class="b">atomic_dec</span><span class="f">(</span><span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="170" /><span class="False">     170:</span> <span class="f">}</span>
<a name="171" /><span class="False">     171:</span> 
<a name="172" /><span class="False">     172:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">atomic_long_add</span><span class="f">(</span><span class="m">long</span> <span class="b">i</span><span class="f">,</span> <span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="173" /><span class="False">     173:</span> <span class="f">{</span>
<a name="174" /><span class="False">     174:</span>     <span class="b">atomic_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="175" /><span class="False">     175:</span> 
<a name="176" /><span class="False">     176:</span>     <span class="b">atomic_add</span><span class="f">(</span><span class="b">i</span><span class="f">,</span> <span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="177" /><span class="False">     177:</span> <span class="f">}</span>
<a name="178" /><span class="False">     178:</span> 
<a name="179" /><span class="False">     179:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">atomic_long_sub</span><span class="f">(</span><span class="m">long</span> <span class="b">i</span><span class="f">,</span> <span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="180" /><span class="False">     180:</span> <span class="f">{</span>
<a name="181" /><span class="False">     181:</span>     <span class="b">atomic_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="182" /><span class="False">     182:</span> 
<a name="183" /><span class="False">     183:</span>     <span class="b">atomic_sub</span><span class="f">(</span><span class="b">i</span><span class="f">,</span> <span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="184" /><span class="False">     184:</span> <span class="f">}</span>
<a name="185" /><span class="False">     185:</span> 
<a name="186" /><span class="False">     186:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">atomic_long_sub_and_test</span><span class="f">(</span><span class="m">long</span> <span class="b">i</span><span class="f">,</span> <span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="187" /><span class="False">     187:</span> <span class="f">{</span>
<a name="188" /><span class="False">     188:</span>     <span class="b">atomic_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="189" /><span class="False">     189:</span> 
<a name="190" /><span class="False">     190:</span>     <span class="m">return</span> <span class="b">atomic_sub_and_test</span><span class="f">(</span><span class="b">i</span><span class="f">,</span> <span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="191" /><span class="False">     191:</span> <span class="f">}</span>
<a name="192" /><span class="False">     192:</span> 
<a name="193" /><span class="False">     193:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">atomic_long_dec_and_test</span><span class="f">(</span><span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="194" /><span class="False">     194:</span> <span class="f">{</span>
<a name="195" /><span class="False">     195:</span>     <span class="b">atomic_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="196" /><span class="False">     196:</span> 
<a name="197" /><span class="False">     197:</span>     <span class="m">return</span> <span class="b">atomic_dec_and_test</span><span class="f">(</span><span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="198" /><span class="False">     198:</span> <span class="f">}</span>
<a name="199" /><span class="False">     199:</span> 
<a name="200" /><span class="False">     200:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">atomic_long_inc_and_test</span><span class="f">(</span><span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="201" /><span class="False">     201:</span> <span class="f">{</span>
<a name="202" /><span class="False">     202:</span>     <span class="b">atomic_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="203" /><span class="False">     203:</span> 
<a name="204" /><span class="False">     204:</span>     <span class="m">return</span> <span class="b">atomic_inc_and_test</span><span class="f">(</span><span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="205" /><span class="False">     205:</span> <span class="f">}</span>
<a name="206" /><span class="False">     206:</span> 
<a name="207" /><span class="False">     207:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">atomic_long_add_negative</span><span class="f">(</span><span class="m">long</span> <span class="b">i</span><span class="f">,</span> <span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="208" /><span class="False">     208:</span> <span class="f">{</span>
<a name="209" /><span class="False">     209:</span>     <span class="b">atomic_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="210" /><span class="False">     210:</span> 
<a name="211" /><span class="False">     211:</span>     <span class="m">return</span> <span class="b">atomic_add_negative</span><span class="f">(</span><span class="b">i</span><span class="f">,</span> <span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="212" /><span class="False">     212:</span> <span class="f">}</span>
<a name="213" /><span class="False">     213:</span> 
<a name="214" /><span class="False">     214:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">long</span> <span class="b">atomic_long_add_return</span><span class="f">(</span><span class="m">long</span> <span class="b">i</span><span class="f">,</span> <span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="215" /><span class="False">     215:</span> <span class="f">{</span>
<a name="216" /><span class="False">     216:</span>     <span class="b">atomic_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="217" /><span class="False">     217:</span> 
<a name="218" /><span class="False">     218:</span>     <span class="m">return</span> <span class="f">(</span><span class="m">long</span><span class="f">)</span><span class="b">atomic_add_return</span><span class="f">(</span><span class="b">i</span><span class="f">,</span> <span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="219" /><span class="False">     219:</span> <span class="f">}</span>
<a name="220" /><span class="False">     220:</span> 
<a name="221" /><span class="False">     221:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">long</span> <span class="b">atomic_long_sub_return</span><span class="f">(</span><span class="m">long</span> <span class="b">i</span><span class="f">,</span> <span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="222" /><span class="False">     222:</span> <span class="f">{</span>
<a name="223" /><span class="False">     223:</span>     <span class="b">atomic_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="224" /><span class="False">     224:</span> 
<a name="225" /><span class="False">     225:</span>     <span class="m">return</span> <span class="f">(</span><span class="m">long</span><span class="f">)</span><span class="b">atomic_sub_return</span><span class="f">(</span><span class="b">i</span><span class="f">,</span> <span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="226" /><span class="False">     226:</span> <span class="f">}</span>
<a name="227" /><span class="False">     227:</span> 
<a name="228" /><span class="False">     228:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">long</span> <span class="b">atomic_long_inc_return</span><span class="f">(</span><span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="229" /><span class="False">     229:</span> <span class="f">{</span>
<a name="230" /><span class="False">     230:</span>     <span class="b">atomic_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="231" /><span class="False">     231:</span> 
<a name="232" /><span class="False">     232:</span>     <span class="m">return</span> <span class="f">(</span><span class="m">long</span><span class="f">)</span><a href="cpu.c_macros_ref.html#_YXRvbWljX2luY19yZXR1cm5fMA__"><span class="b">atomic_inc_return</span></a><span class="f">(</span><span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="233" /><span class="False">     233:</span> <span class="f">}</span>
<a name="234" /><span class="False">     234:</span> 
<a name="235" /><span class="False">     235:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">long</span> <span class="b">atomic_long_dec_return</span><span class="f">(</span><span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">)</span>
<a name="236" /><span class="False">     236:</span> <span class="f">{</span>
<a name="237" /><span class="False">     237:</span>     <span class="b">atomic_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="238" /><span class="False">     238:</span> 
<a name="239" /><span class="False">     239:</span>     <span class="m">return</span> <span class="f">(</span><span class="m">long</span><span class="f">)</span><a href="cpu.c_macros_ref.html#_YXRvbWljX2RlY19yZXR1cm5fMA__"><span class="b">atomic_dec_return</span></a><span class="f">(</span><span class="b">v</span><span class="f">)</span><span class="f">;</span>
<a name="240" /><span class="False">     240:</span> <span class="f">}</span>
<a name="241" /><span class="False">     241:</span> 
<a name="242" /><span class="False">     242:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">long</span> <span class="b">atomic_long_add_unless</span><span class="f">(</span><span class="b">atomic_long_t</span> <span class="f">*</span><span class="b">l</span><span class="f">,</span> <span class="m">long</span> <span class="b">a</span><span class="f">,</span> <span class="m">long</span> <span class="b">u</span><span class="f">)</span>
<a name="243" /><span class="False">     243:</span> <span class="f">{</span>
<a name="244" /><span class="False">     244:</span>     <span class="b">atomic_t</span> <span class="f">*</span><span class="b">v</span> <span class="f">=</span> <span class="f">(</span><span class="b">atomic_t</span> <span class="f">*</span><span class="f">)</span><span class="b">l</span><span class="f">;</span>
<a name="245" /><span class="False">     245:</span> 
<a name="246" /><span class="False">     246:</span>     <span class="m">return</span> <span class="f">(</span><span class="m">long</span><span class="f">)</span><span class="b">atomic_add_unless</span><span class="f">(</span><span class="b">v</span><span class="f">,</span> <span class="b">a</span><span class="f">,</span> <span class="b">u</span><span class="f">)</span><span class="f">;</span>
<a name="247" /><span class="False">     247:</span> <span class="f">}</span>
<a name="248" /><span class="False">     248:</span> 
<a name="249" /><span class="False">     249:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_YXRvbWljX2xvbmdfaW5jX25vdF96ZXJvXzA_"><span class="b">atomic_long_inc_not_zero</span></a><span class="f">(</span><span class="b">l</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_YXRvbWljX2luY19ub3RfemVyb18w"><span class="b">atomic_inc_not_zero</span></a><span class="f">(</span><span class="f">(</span><span class="b">atomic_t</span> <span class="f">*</span><span class="f">)</span><span class="f">(</span><span class="b">l</span><span class="f">)</span><span class="f">)</span>
<a name="250" /><span class="False">     250:</span> 
<a name="251" /><span class="False">     251:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_YXRvbWljX2xvbmdfY21weGNoZ18w"><span class="b">atomic_long_cmpxchg</span></a><span class="f">(</span><span class="b">l</span><span class="f">,</span> <span class="b">old</span><span class="f">,</span> <span class="m">new</span><span class="f">)</span> \
<a name="252" /><span class="False">     252:</span>     <span class="f">(</span><span class="b">atomic_cmpxchg</span><span class="f">(</span><span class="f">(</span><span class="b">atomic_t</span> <span class="f">*</span><span class="f">)</span><span class="f">(</span><span class="b">l</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">old</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="m">new</span><span class="f">)</span><span class="f">)</span><span class="f">)</span>
<a name="253" /><span class="False">     253:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_YXRvbWljX2xvbmdfeGNoZ18w"><span class="b">atomic_long_xchg</span></a><span class="f">(</span><span class="b">v</span><span class="f">,</span> <span class="m">new</span><span class="f">)</span> \
<a name="254" /><span class="False">     254:</span>     <span class="f">(</span><span class="b">atomic_xchg</span><span class="f">(</span><span class="f">(</span><span class="b">atomic_t</span> <span class="f">*</span><span class="f">)</span><span class="f">(</span><span class="b">v</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="m">new</span><span class="f">)</span><span class="f">)</span><span class="f">)</span>
<a name="255" /><span class="False">     255:</span> 
<a name="256" /><span class="True">     256:</span> <span class="f">#</span><span class="n">endif</span>  <span class="k">/*  BITS_PER_LONG == 64  */</span>
<a name="257" /><span class="True">     257:</span> 
<a name="258" /><span class="True">     258:</span> <span class="f">#</span><span class="n">endif</span>  <span class="k">/*  _ASM_GENERIC_ATOMIC_LONG_H  */</span>
<a name="259" /><span class="True">     259:</span> </pre>
  </body>
</html>
